The present invention relates generally to electrically erasable and programmable non-volatile memories. More particularly, this invention relates to a method and circuit that speeds up the programming and program verification operations of a memory device by simultaneously programming in one bank and verifying the programming in another bank of a memory device.
Electronic systems typically include processors and memory. The memory is used to store instructions and data. In some systems, such as cellular phones, non-volatile memory is needed to ensure that the stored data is not lost even when the system is turned off. One non-volatile memory family is Read Only Memory (ROM), Programmable ROM (PROM), and Erasable-Programmable ROM (EPROM), with varying degrees of flexibility of use. ROM memories have high density, low power consumption, and high performance, but they are not in-system updateable. On the other hand is the volatile memory family of Random Access Memory (RAM), Dynamic RAM (DRAM), and battery-backed Static RAM (SRAM). The RAM family, however, is in-system updateable and has high performance, but it is volatile. DRAM stores temporary data, and SRAM integrates a battery to retain stored data when system power is removed. SRAM is considerably more expensive than DRAM. Electrically-Erasable-Programmable ROM (EEPROM) is a special kind of ROM that is in-system modifiable on a byte-by-byte basis, like RAM, but it is also non-volatile, like ROM.
Flash memory is one type of inherently nonvolatile memory, with no refresh or battery requirements, which can be read, erased, or programmed in units of memory such a sectors or banks. It is a variation of EEPROM which, unlike flash memory, is erased and rewritten at the byte level, which is slower than flash memory updating. Flash memory is often used to hold control code such as BIOS in personal computer. When BIOS needs to be changed, the flash memory can be updated in block (rather than byte) sizes, making it easy to update. Flash memory is used in digital cellular phones, digital cameras, LAN switches, PC cards for notebook computers, digital set-up boxes, embedded controllers, and other devices. Flash memory is in-system updateable. Its simpler cell architecture (only one transistor) gives it significant density advantages over both EEPROM and SRAM, and compares favorably with densities achieved by ROM and DRAM on analogous manufacturing processes. Finally, flash memory is the only approach to satisfy the desired characteristics of nonvolatility, upgradeability, high density, and low cost.
One problem with prior flash memories is that they do not provide sufficient random access. For example, prior flash memory devices typically do not allow a processor to perform a program-verify operation while a program operation is underway in the memory device. Typically, the processor periodically polls a status register of the flash memory device to detect the end of the program operation before initiating a program-verify operation of the memory device. That is, a processor should wait until a program cycle is complete before initiating a program-verify cycle, because both program and program-verify operations cannot be performed simultaneously.
While prior art memory systems allow simultaneous read and write operations, they suffer from the problem that they can only do asynchronous (not clocked) memory read operation in combination with another embedded memory operation, such as embedded memory program or embedded memory erase operations. Embedded memory operations are command-sequence-mode operations which are carried out by writing a specific address and data sequence into a sequence register. Because asynchronous memory read operation is not a command-sequence-mode (embedded) operation, rather it is a direct-mode-operation like a default operation, prior art memory systems are not capable of simultaneously performing two command-sequence-mode (embedded) operations such as memory erase, memory write, and memory program-verify operations. Therefore, there is a need for an efficient flash memory device that allows simultaneous embedded program and program-verify operations in the same cycle.